// 奇思妙绘-我的页面逻辑
const app = getApp()
const api = require('../../utils/api.js')

Page({
  data: {
    userInfo: null,
    isVip: false,
    vipLevel: 0,
    vipExpireDate: null,
    vipExpireDateText: '未开通',
    credits: 0,
    freeCredits: 0,
    isLoading: true,
    showAdBtn: true,
    showCheckInBtn: true,
    loadFailed: false,
    isLoggedIn: false,
    vipPackages: [
      { id: 'vip1', name: '包月VIP', price: '19.9', originalPrice: '39.9', desc: '每天可免费生成30张图片', days: 30 },
      { id: 'vip3', name: '包季VIP', price: '49.9', originalPrice: '99.9', desc: '每天可免费生成60张图片', days: 90 },
      { id: 'vip12', name: '包年VIP', price: '159.9', originalPrice: '299.9', desc: '每天可免费生成100张图片', days: 365 }
    ]
  },

  onLoad: function() {
    // 检查登录状态
    this.checkLoginStatus()
  },
  
  onShow: function() {
    // 每次显示页面时检查登录状态
    this.checkLoginStatus()
    
    // 更新tabBar选中状态
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        selected: 1
      });
    }
  },
  
  // 下拉刷新
  onPullDownRefresh: function() {
    this.checkLoginStatus().then(() => {
      wx.stopPullDownRefresh()
    })
  },
  
  // 检查登录状态
  checkLoginStatus: function() {
    return new Promise((resolve) => {
      this.setData({ isLoading: true, loadFailed: false })
      
      // 检查是否已登录
      app.checkSession().then(isLoggedIn => {
        this.setData({ isLoggedIn: isLoggedIn })
        
        if (isLoggedIn) {
          // 已登录，加载用户信息
          this.loadUserInfo().then(resolve).catch(resolve)
        } else {
          // 未登录，显示登录提示
          this.setData({ 
            isLoading: false,
            loadFailed: false
          })
          
          // 显示登录对话框
          wx.showModal({
            title: '需要登录',
            content: '查看个人信息需要登录账号',
            confirmText: '去登录',
            cancelText: '返回首页',
            success: (res) => {
              if (res.confirm) {
                // 用户选择登录
                app.login().then(success => {
                  if (success) {
                    // 登录成功，加载用户信息
                    this.setData({ isLoggedIn: true })
                    this.loadUserInfo().then(resolve).catch(resolve)
                  } else {
                    // 登录失败
                    wx.navigateBack()
                    resolve()
                  }
                })
              } else {
                // 用户取消登录，返回上一页
                wx.navigateBack()
                resolve()
              }
            }
          })
        }
      })
    })
  },
  
  // 加载用户信息
  loadUserInfo: function() {
    return new Promise((resolve, reject) => {
      this.setData({ isLoading: true, loadFailed: false })
      
      // 从全局获取用户信息
      if (app.globalData.userInfo) {
        const userInfo = app.globalData.userInfo
        
        // 更新页面数据
        this.setData({
          userInfo: userInfo,
          isVip: userInfo.isVip || false,
          vipLevel: userInfo.vipLevel || 0,
          vipExpireDate: userInfo.vipExpireDate || null,
          vipExpireDateText: userInfo.vipExpireDate ? this.formatDate(userInfo.vipExpireDate) : '未开通',
          credits: userInfo.credits || 0,
          freeCredits: userInfo.freeCredits || 0,
          isLoading: false
        })
        
        resolve()
      } else {
        // 从API获取用户信息
        api.get('/api/user/info')
          .then(res => {
            if (res.userInfo) {
              // 更新页面数据
              this.setData({
                userInfo: res.userInfo,
                isVip: res.userInfo.isVip || false,
                vipLevel: res.userInfo.vipLevel || 0,
                vipExpireDate: res.userInfo.vipExpireDate || null,
                vipExpireDateText: res.userInfo.vipExpireDate ? this.formatDate(res.userInfo.vipExpireDate) : '未开通',
                credits: res.userInfo.credits || 0,
                freeCredits: res.userInfo.freeCredits || 0,
                isLoading: false
              })
              
              resolve()
            } else {
              this.setData({ 
                isLoading: false,
                loadFailed: true
              })
              
              reject(new Error('获取用户信息失败'))
            }
          })
          .catch(err => {
            console.error('获取用户信息失败', err)
            this.setData({ 
              isLoading: false,
              loadFailed: true
            })
            
            reject(err)
          })
      }
    })
  },
  
  // 格式化日期
  formatDate: function(dateString) {
    const date = new Date(dateString)
    return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`
  },
  
  // 签到
  checkIn: function() {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.checkLoginStatus()
      return
    }
    
    wx.showLoading({
      title: '签到中...'
    })
    
    api.get('/api/user/check-in')
      .then(res => {
        wx.hideLoading()
        
        if (res.success) {
          wx.showToast({
            title: '签到成功，积分+2',
            icon: 'success'
          })
          
          // 刷新用户信息
          this.loadUserInfo()
        } else {
          wx.showToast({
            title: res.message || '签到失败，请重试',
            icon: 'none'
          })
        }
      })
      .catch(err => {
        wx.hideLoading()
        console.error('签到失败', err)
        wx.showToast({
          title: '签到失败，请重试',
          icon: 'none'
        })
      })
  },
  
  // 观看广告获取次数
  watchAd: function() {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.checkLoginStatus()
      return
    }
    
    wx.showLoading({
      title: '加载广告...'
    })
    
    // 使用抖音小程序的激励视频广告API
    const videoAd = wx.createRewardedVideoAd({
      adUnitId: 'adunit-test-id' // 测试环境广告单元ID
    })
    
    videoAd.onLoad(() => {
      wx.hideLoading()
      videoAd.show()
    })
    
    videoAd.onError((err) => {
      wx.hideLoading()
      console.error('广告加载失败', err)
      wx.showToast({
        title: '广告加载失败，请重试',
        icon: 'none'
      })
    })
    
    videoAd.onClose((res) => {
      // 用户完整观看广告
      if (res && res.isEnded) {
        // 增加免费次数
        api.post('/api/user/add-free-credits', { count: 3 })
          .then(res => {
            if (res.success) {
              this.loadUserInfo()
              
              wx.showToast({
                title: '获得3次免费次数',
                icon: 'success'
              })
            }
          })
          .catch(err => {
            console.error('增加免费次数失败', err)
          })
      } else {
        // 用户提前关闭广告
        wx.showToast({
          title: '需完整观看广告才能获得奖励',
          icon: 'none'
        })
      }
    })
    
    // 模拟增加免费次数（仅用于开发环境测试）
    setTimeout(() => {
      wx.hideLoading()
      this.setData({
        freeCredits: this.data.freeCredits + 3
      })
      wx.showToast({
        title: '获得3次免费次数',
        icon: 'success'
      })
    }, 1500)
  },
  
  // 购买VIP
  buyVip: function(e) {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.checkLoginStatus()
      return
    }
    
    const packageId = e.currentTarget.dataset.id
    const selectedPackage = this.data.vipPackages.find(pkg => pkg.id === packageId)
    
    if (!selectedPackage) return
    
    wx.showModal({
      title: '购买会员',
      content: `确认购买${selectedPackage.name}，价格${selectedPackage.price}元？`,
      success: res => {
        if (res.confirm) {
          // 调用支付接口
          this.doPay(selectedPackage)
        }
      }
    })
  },
  
  // 执行支付逻辑
  doPay: function(packageItem) {
    wx.showLoading({
      title: '请求支付...'
    })
    
    // 调用支付API
    api.post('/api/vip/purchase', {
      packageId: packageItem.id
    })
      .then(res => {
        wx.hideLoading()
        
        if (res.success) {
          // 刷新用户信息
          this.loadUserInfo()
          
          wx.showToast({
            title: '购买成功',
            icon: 'success'
          })
        } else {
          wx.showToast({
            title: res.message || '购买失败，请重试',
            icon: 'none'
          })
        }
      })
      .catch(err => {
        wx.hideLoading()
        console.error('购买失败', err)
        wx.showToast({
          title: '购买失败，请重试',
          icon: 'none'
        })
      })
  },
  
  // 刷新页面
  refreshPage: function() {
    this.checkLoginStatus()
  },
  
  // 查看历史
  viewHistory: function() {
    // 检查登录状态
    if (!this.data.isLoggedIn) {
      this.checkLoginStatus()
      return
    }
    
    wx.showToast({
      title: '历史记录功能暂未开放',
      icon: 'none'
    })
  },
  
  // 客服
  contactService: function() {
    wx.showToast({
      title: '客服功能暂未开放',
      icon: 'none'
    })
  },
  
  // 关于我们
  aboutUs: function() {
    wx.showToast({
      title: '关于我们功能暂未开放',
      icon: 'none'
    })
  }
}) 